import request from '@/utils/request'

// 上传分片
export function uploadChunk (data) {
  return request({
    url: '/file/chunk/upload',
    method: 'post',
    data,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

// 检查文件是否已存在
export function checkFile (data) {
  return request({
    url: `/file/${data}`,
    method: 'get'
  })
}

// 检查分片是否已上传
export function checkChunk (data) {
  return request({
    url: `/file/chunk/${data}`,
    method: 'get'
  })
}

// 合并分片
export function mergeChunk (data) {
  return request({
    url: '/file/chunk/merge',
    method: 'post',
    data
  })
}

//小文件直传
export function upload (data) {
  return request({
    url: '/file/upload',
    method: 'post',
    data: {
      file: data.fileItem.file,
      fileName: data.fileItem.file.name
    },
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 获取根字典，用于获取字典列表，并进行逐级选择获取
 * 
 * 返回根字典列表
 * 
 * @returns {promises} 根字典列表
 */
export function getDictionaryRoot () {
  return request({
    url: '/dictionary/rootType',
    method: 'get',
  })
}

/**
 * 获取全部的字典列表
 * 
 * 返回全部的字典列表
 * 
 * @returns {promises} 字典列表
 */
export function getDictionaryAll () {
  return request({
    url: '/dictionary/all',
    method: 'get',
  })
}

/**
 * 根据字典类型获取字典
 * 
 * 传入字典类型，返回该类型的字典列表
 * 
 * @param {string} type - 字典类型
 * @returns {promises} 字典列表
 */
export function getDictionaryByType (type) {
  return request({
    url: `/dictionary/${type}`,
    method: 'get',
  })
}

/**
 * 新增字典值
 * 
 * 传入字典标签、字典排序、字典值和字典id封装好的对象
 * 
 * 返回新增成功或失败的提示
 * 
 * @param {string} data - 封装好的数据
 * @param {string} data.dicLabel - 字典标签
 * @param {(string|number)} data.dicSort - 字典排序
 * @param {string} data.dicValue - 字典值
 * @param {string} data.dicType - 所属字典类型
 * @returns {promises} 字典列表
 */
export function addDictionaryValue (data) {
  return request({
    url: 'dictionary/value/add',
    method: 'post',
    data: {
      dicLabel: data.dicLabel,
      dicSort: +data.dicSort,
      dicValue: data.dicValue,
      dicType: data.dicType
    }
  })
}

/**
 * 修改字典值
 * 
 * 传入字典标签、字典排序、字典值和字典id封装好的对象
 * 
 * 返回修改成功或失败的提示
 * 
 * @param {string} data - 封装好的数据
 * @param {string} data.dicLabel - 字典标签
 * @param {(string|number)} data.dicSort - 字典排序
 * @param {string} data.dicValue - 字典值
 * @param {string} data.id - 字典id
 * @returns {promises} 字典列表
 */
export function updateDictionaryValue (data) {
  return request({
    url: 'dictionary/value/update',
    method: 'put',
    data: {
      dicLabel: data.dicLabel,
      dicSort: +data.dicSort,
      dicValue: data.dicValue,
      id: data.id
    }
  })
}

/**
 * 删除字典值
 * 
 * 传入需要删除的字典值的id
 * 
 * 返回删除成功或失败的提示
 * 
 * @param {string} id - 字典值id
 * @returns {promises} 成功或失败的提示
 */
export function deleteDictionaryValue (id) {
  return request({
    url: `dictionary/value/delete?id=${id}`,
    method: 'delete',
  })
}

/**
 * 新增字典键
 * 
 * 传入字典标签、字典排序、父子点id和字典id封装好的对象
 * 
 * 返回新增成功或失败的提示
 * 
 * @param {string} data - 封装好的数据
 * @param {string} data.dicLabel - 字典标签
 * @param {(string|number)} data.dicSort - 字典排序
 * @param {string} data.pid - 父字典id
 * @param {string} data.dicType - 所属字典类型
 * @returns {promises} 字典列表
 */
export function addDictionaryKey (data) {
  return request({
    url: 'dictionary/type/add',
    method: 'post',
    data: {
      dicName: data.dicName,
      dicSort: +data.dicSort,
      pid: data.pid,
      dicType: data.dicType
    }
  })
}

/**
 * 删除字典键
 * 
 * 传入需要删除的字典键的id
 * 
 * 返回删除成功或失败的提示
 * 
 * @param {string} id - 字典键id
 * @returns {promises} 成功或失败的提示
 */
export function deleteDictionaryKey (id) {
  return request({
    url: `dictionary/type/delete?id=${id}`,
    method: 'delete',
  })
}

/**
 * 获取消息模板
 * 
 * 返回消息模板列表
 * 
 * @returns {promises} 消息模板列表
 */
export function getMsgTemplatePage (data) {
  return request({
    url: '/message/template/page',
    method: 'post',
    data: {
      pageSize:data.pageSize,
      pageNum:data.pageNum,
      name:data.msgTemplateName,
      type:data.msgTemplateType,
      template:data.msgTemplateTemp,
      startTime:data.createTimeStartAndEnd[0],
      endTime:data.createTimeStartAndEnd[1]
    }
  })
}

/**
 * 新增消息模板
 * 
 * 返回新增成功或失败的提示
 * 
 * @param {string} data - 封装好的数据
 * @param {string} data.msgTemplateName - 消息模板名称
 * @param {string} data.msgTemplateTemp - 消息模板体
 * @param {string} data.msgTemplateType - 消息模板类型
 * @param {string} data.keywords - 关键字
 * @returns {promises} 消息模板列表
 */
export function addMsgTemplate (data) {
  return request({
    url: '/message/template',
    method: 'post',
    data: {
      keywords: data.keyWords.keyWords,
      name: data.msgTemplateName,
      template: data.msgTemplateTemp,
      type: data.msgTemplateType
    }
  })
}

/**
 * 修改消息模板
 * 
 * 返回修改成功或失败的提示
 * 
 * @param {string} data - 封装好的数据
 * @param {string} data.msgTemplateName - 消息模板名称
 * @param {string} data.msgTemplateTemp - 消息模板体
 * @param {string} data.msgTemplateType - 消息模板类型
 * @param {string} data.keywords - 关键字
 * @param {string} data.id - 消息模板id
 * @returns {promises} 修改成功或失败的提示
 */
export function updateMsgTemplate (data) {
  return request({
    url: '/message/template',
    method: 'put',
    data: {
      id: data.id,
      keywords: data.keyWords.keyWords,
      name: data.msgTemplateName === data.oldMsgTemplateName ? '' : data.msgTemplateName,
      template: data.msgTemplateTemp === data.oldMsgTemplateTemp ? '' : data.msgTemplateTemp,
      type: data.msgTemplateType === data.oldMsgTemplateType ? '' : data.msgTemplateType
    }
  })
}

/**
 * 修改消息模板状态
 * 
 * 返回修改成功或失败的提示
 * 
 * @param {string} data - 封装好的数据
 * @param {string} data.id - 消息模板id
 * @param {string} data.status - 消息模板状态
 * @returns {promises} 修改成功或失败的提示
 */
export function updateMsgTemplateStatus (data) {
  return request({
    url: '/message/template',
    method: 'put',
    data: {
      id: data.id,
      status: data.status
    }
  })
}

/**
 * 删除消息模板
 * 
 * 返回删除成功或失败的提示
 * 
 * @param {string} id - 要删除的消息模板id
 * @returns {promises} 删除成功或失败的提示
 */
export function deleteMsgTemplate (id) {
  return request({
    url: `/message/template?id=${id}`,
    method: 'delete',
  })
}